#include <opencv2/opencv.hpp>
#include "../src/device/device_tft180.cpp"
#include "../src/socket_tcp.cpp"
#include <iostream>
#include <chrono>

#define SERVER_IP       "192.168.31.217"
#define SERVER_PORT     8080

int main() {
    // 打开摄像头
    cv::VideoCapture capture(0);  // 0 表示默认摄像头
    if (!capture.isOpened()) {
        std::cerr << "Error: 无法打开摄像头" << std::endl;
        return -1;
    }

    // 设置分辨率和帧率
    capture.set(cv::CAP_PROP_FRAME_WIDTH, 160);
    capture.set(cv::CAP_PROP_FRAME_HEIGHT, 120);
    capture.set(cv::CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'));
    capture.set(cv::CAP_PROP_FPS, 120);

    TFT180 tft180;
    // Socket_Tcp tcp(SERVER_IP, SERVER_PORT);
    // if(tcp.server_config() < 0) {
    //     return -1;
    // }

    // 循环捕获帧
    while (true) {
        cv::Mat frame;
        capture >> frame;  // 捕获一帧
        if (frame.empty()) {
            std::cerr << "Error: 捕获到空帧" << std::endl;
            break;
        }

        cv::Rect roi(0, 35, 160, 70);
        cv::Mat cutimg = frame(roi);
        cv::Size newSize(160, 100);
        resize(cutimg, cutimg, newSize, 0, 0, cv::INTER_LINEAR);

        cv::line(cutimg, cv::Point(80, 0), cv::Point(80, cutimg.rows-1), cv::Scalar(0, 255, 0), 1);
        cv::line(cutimg, cv::Point(0, cutimg.rows-1-60), cv::Point(cutimg.cols-1, cutimg.rows-1-60), cv::Scalar(0, 255, 0), 1);
        tft180.showCVImage(0, 0, cutimg, 128, 96);
        // if(tcp.img_imencode(frame)) {
        //     tcp.send_img();
        // }
    }

    // 释放摄像头资源
    capture.release();
    std::cout << "摄像头测试完成" << std::endl;

    return 0;
}